package mac5855.app.controllers;

import java.util.Date;

import javax.servlet.RequestDispatcher;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import mac5855.app.dao.DAOFactory;
import mac5855.app.dao.DenunciaDAO;
import mac5855.app.dao.PerguntaDAO;
import mac5855.app.dao.RespostaDAO;
import mac5855.app.dao.UsuarioDAO;
import mac5855.app.models.Denuncia;
import mac5855.app.models.Pergunta;
import mac5855.app.models.Resposta;
import mac5855.app.models.Usuario;

public class DenunciaController implements BusinessLogic {

	@Override
	public void execute(HttpServletRequest request, HttpServletResponse response)
			throws Exception {
		String action = request.getParameter("action");
		System.out.println("action:"+action);
		if(action == null) {
			RequestDispatcher rd = null;
			System.out.println("Executando a logica e redirecionando...");
			HttpSession session = ((HttpServletRequest) request).getSession();
			String userEmail = (String) session.getAttribute("User");

			System.out.println("Email user:"+userEmail);
			UsuarioDAO usuarioDAO = DAOFactory.getDAOFactory(1).getUsuarioDAO();
			Usuario usuario = usuarioDAO.findByEmail(userEmail);
			System.out.println(usuario);
			Denuncia denuncia = new Denuncia();
			
			if (request.getParameter("pergunta_id") != null && request.getParameter("pergunta_id").length() > 0) {
				PerguntaDAO perguntaDAO = DAOFactory.getDAOFactory(1).getPerguntaDAO();
				Pergunta pergunta = new Pergunta();
				try {
					pergunta = perguntaDAO.findById(Integer.parseInt(request.getParameter("pergunta_id")));
					rd = request.getRequestDispatcher("/show_pergunta.jsp?id="+pergunta.getId());
					denuncia.setPergunta(pergunta);
				} catch (NumberFormatException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
			}
			if (request.getParameter("resposta_id") != null && request.getParameter("resposta_id").length() > 0) {
				RespostaDAO respostaDAO = DAOFactory.getDAOFactory(1).getRespostaDAO();
				Resposta resposta = new Resposta();
				try {
					resposta = respostaDAO.findById(Integer.parseInt(request.getParameter("resposta_id")));
					rd = request.getRequestDispatcher("/show_pergunta.jsp?id="+resposta.getPergunta().getId());
					denuncia.setResposta(resposta);
				} catch (NumberFormatException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
			}
			denuncia.setMotivo(request.getParameter("motivo"));
			denuncia.setData(new Date());
			denuncia.setUsuario(usuario);
			
			DenunciaDAO denunciaDAO = DAOFactory.getDAOFactory(1).getDenunciaDAO();
			denunciaDAO.create(denuncia);
			
			rd.forward(request, response);

		}
		else if(action.equals("show")) {
			String id = request.getParameter("id");
			RequestDispatcher rd = request.getRequestDispatcher("/show_pergunta.jsp?id="+id);
			rd.forward(request, response);
		}

	}

}
